"""
BasePage提供公共方法的封装，既和页面逻辑无关的封装
比如解决driver初始化的问题

"""

from selenium import webdriver
from selenium.webdriver.chrome.webdriver import WebDriver


class BasePage:
    def __init__(self, base_driver=None):

        # base_driver解决重复实例化webdriver的问题
        if base_driver is None:
            # 通过remote复用Chrome浏览器
            chrome_arg = webdriver.ChromeOptions()
            # 加入调试地址
            chrome_arg.debugger_address = '127.0.0.1:9222'
            # 实例化driver对象
            self.driver = webdriver.Chrome(options=chrome_arg)

            base_url = 'https://work.weixin.qq.com/wework_admin/frame#index'

            # 打开首页
            self.driver.get(base_url)
        else:
            # 给self.driver添加一个WebDriver对象注解，解决类型提示问题
            # 注解本身没有任何赋值作用，方便IDE操作
            self.driver: WebDriver = base_driver

        # 隐式等待页面加载，解决unable to locate the element……
        self.driver.implicitly_wait(3)